package com.atguigu.composite;

/**
 * @program: design-patterns
 * @author: yangshen
 * @description: 抽象类 - 机构类（包含：学校-》学院-》院系）
 * @create: 2022-02-18 22:28
 **/
public abstract class OrganizationComponent {
    /**
     * 姓名
     */
    private String name;
    /**
     * 描述
     */
    private String des;

    public OrganizationComponent(String name, String des) {
        this.name = name;
        this.des = des;
    }

    protected void add(OrganizationComponent organizationComponent){
        //默认实现（并不是每个子类都需要实现该方法，比如叶子节点类，所以该方法不能为抽象方法）
        throw new UnsupportedOperationException();
    }
    protected void remove(OrganizationComponent organizationComponent){
        //默认实现（并不是每个子类都需要实现该方法，比如叶子节点类，所以该方法不能为抽象方法）
        throw new UnsupportedOperationException();
    }

    /**
     * 打印节点：方法print做成抽象的，子类都需要实现，叶子节点（院系）和非叶子节点（学院，学校）都需要实现
     */
    protected abstract void print();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }
}
